cmake_minimum_required(VERSION "3.10.2")

project("demo2")


# 加入一个配置头文件，用于处理 CMake 对源码的设置
configure_file (
  "${PROJECT_SOURCE_DIR}/config.h.in"
  "${PROJECT_BINARY_DIR}/config.h"
  )
  set(CMAKE_INCLUDE_CURRENT_DIR ON)


# 是否使用自己的 MathFunctions 库
option (USE_MYMATH
"Use provided math implementation" ON)

# 是否加入 MathFunctions 库
if (USE_MYMATH)
  include_directories ("${PROJECT_SOURCE_DIR}/math")
  add_subdirectory (math)  
  set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif (USE_MYMATH)



# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 添加 math子目录
add_subdirectory(math)
#其中：
#第7行的 configure_file 命令用于加入一个配置头文件 config.h ，这个文件由 CMake 从 config.h.in 生成，通过这样的机制，将可以通过预定义一些参数和变量来控制代码的生成。
#第13行的 option 命令添加了一个 USE_MYMATH 选项，并且默认值为 ON 。
#第17行根据 USE_MYMATH 变量的值来决定是否使用我们自己编写的 MathFunctions 库。


# 指定生成目标
add_executable("${PROJECT_NAME}"  ${DIR_SRCS})
# 添加链接库
target_link_libraries("${PROJECT_NAME}" MathFunctions)

##ccmake  命令教程
#从中可以找到刚刚定义的 USE_MYMATH 选项
#，按键盘的方向键可以在不同的选项窗口间跳转，
#按下 enter 键可以修改该选项。修改完成后可以
#按下 c 选项完成配置，之后再按 g 键确认生成 Makefile 。ccmake 的其他操作可以参考窗口下方给出的指令提示。
#我们可以试试分别将 USE_MYMATH 设为 ON 和 OFF 得到的结果：
#USE_MYMATH 为 ON
# cmake 

# 第一个参数是可执行文件的名称，可以随便命名为门喜欢的名字，第二个是可执行文件
# add_executable("${PROJECT_NAME}" "Main.cpp" "MathFunctions.cpp")
